package com.wangc.algorithm.sort;

/**
 * @author wangC
 * @create 2020-07-07 下午10:58
 * @Description 插入排序
 **/
public class InsertSort {


    private static void insertSort(int[] arr) {
        if (arr == null || arr.length < 2) {
            return;
        }

        //0-0 有序
        //0-i 想有序
        // 4 5 3 2 6 2
        // 0 1 2 3 4 5
        for (int i = 1 ; i < arr.length;i++) {

            for( int j = i-1; j>=0;j--) {
                if (arr[j+1] < arr[j]) {
                     swap(arr,j,j+1);
                }
            }
        }
    }


    public static void testInsetSort(int[] arr) {
        if (arr == null || arr.length < 2) {
            return;
        }
        for (int i = 1; i < arr.length; i++) {
            for (int j = i - 1; j >= 0; j--) {
                if (arr[j] > arr[j + 1]) {
                    swap(arr,j,j+1);
                }
            }
        }
    }


    // i 和 j 是一个位置的话，会出错
    public static void swap(int[] arr, int i, int j) {
        arr[i] = arr[i] ^ arr[j];
        arr[j] = arr[i] ^ arr[j];
        arr[i] = arr[i] ^ arr[j];


    }

    public static void main(String[] args) {
        int[] arr = {6, 5};
        insertSort(arr);
        for (int i = 0; i <arr.length ; i++) {
            System.out.println(arr[i]);
        }
    }

    void asd(int[] arr) {
        // 1,0
        // 2,1 ; 1,0
        // 3,2 ; 2,1 ; 1,0

        for (int i = 1 ; i < arr.length; i++) {
            for (int j = i-1 ; j>=0;j--) {
                if (arr[j] > arr[j+1]){
                    swap(arr,j,j+1);
                }


            }
        }
    }

    void InsertSortTest32(int[] arr) {
        for (int i = 1; i < arr.length; i++) {
            for (int j = i - 1; j >= 0; j--) {
                if (arr[j + 1] < arr[j]) {
                    swap(arr,j+1,j);
                }
            }
        }
    }

    void insertTest22(int[] arr) {
        for (int i = 1; i < arr.length; i++) {
            for (int j = i - 1; j >= 0; j--) {
                if (arr[j] > arr[j + 1]) {
                    swap(arr,j,j+1);
                }
            }
        }
    }

    void insertSortTest11(int[] arr) {
        for (int i = 1; i < arr.length; i++) {
            for (int j = i-1;j>=0;j--) {
                if (arr[j] > arr[j + 1]) {
                    swap(arr,j,j+1);
                }
            }
        }
    }

    void insertSortTest33(int[] arr) {
        for (int i = 1; i < arr.length; i++) {
            for (int j = i - 1; j >= 0; j--) {
                if (arr[j] > arr[j + 1]) {
                    swap(arr, j, j + 1);
                }
            }
        }
    }

    void insertSortTest44(int[] arr) {
        for (int i = 1; i < arr.length; i++) {
            for (int j = i - 1; j >= 0; j--) {
                if (arr[j] < arr[j + 1]) {
                    swap(arr,j,j+1);
                }
            }
        }
    }
}
